home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 9 / FM Towns Free Software Collection 9.iso / taropyon / silib / inc / sitsk.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-11-16  |  4.7 KB  |  150 lines

  1. /*************************************************************************
  2. *    "sitsk.h"
  3. *-------------------------------------------------------------------------
  4. *    Task library
  5. *                                            Copyright (c) 1993, TaroPYON
  6. *************************************************************************/
  7.  
  8. #ifndef    _SITSK_H
  9. #define    _SITSK_H
  10.  
  11. #include    <setjmp.h>
  12.  
  13. #ifndef    _SIWIN_H
  14. #    include    <siwin.h>
  15. #endif
  16. #ifndef    _SIEV_H
  17. #    include    <siev.h>
  18. #endif
  19.  
  20. typedef struct _tskwin_t    /* タスクウィンドゥ構造体    */
  21. {
  22.     struct _tskwin_t    *next, *prev;
  23.  
  24.     unsigned int    att;            /* 属性                    */
  25.     unsigned int    stt;            /* ステータス            */
  26.     int                active;            /* アクティブフラグ        */
  27.  
  28.     EV_T        *ev;                /* イベント                */
  29.     WIN_T        *win;
  30.     FRAME_T        fr;                    /* ユーザー作業用        */
  31.     FRAME_T        frTop;                /* トップフレーム        */
  32.     FRAME_T        frLeft;                /* レフトフレーム        */
  33.     FRAME_T        frRight;            /* ライトフレーム        */
  34.     FRAME_T        frBottom;            /* ボトムフレーム        */
  35.     void        *tsk;                /* 自身のタスク            */
  36.  
  37.     struct
  38.     {    struct { int xs,ys;} max;    /* 最大                    */
  39.         struct { int xs,ys;} std;    /* 標準                    */
  40.         struct { int xs,ys;} min;    /* 最小                    */
  41.     } winsiz;
  42.  
  43.     int            winTyp;                /* ウィンドゥのタイプ    */
  44.     int            (*sysFunc)(struct _tskwin_t *);
  45.                                     /* システム表示用        */
  46.  
  47.     int            (*usrFunc)(struct _tskwin_t *);
  48.                                     /* ユーザー表示用        */
  49.     void        *ptr;                /* ユーザー用ポインタ    */
  50.     char        winName[128];        /* ウィンドゥ名            */
  51. } TSKWIN_T;
  52.  
  53. #define    TSKWIN_ATT_MAIN        (0x8000_000)    /* タスク・メインウィンドゥ */
  54.  
  55. #define    TSKWIN_STT_ACTIVE    (0x0000_0001)    /* アクティブ・ウィンドゥ    */
  56.  
  57.  
  58. typedef struct _tsk_t                /* タスク構造体            */
  59. {
  60.     struct _tsk_t        *next, *prev;
  61.  
  62.     unsigned int    tskNo;
  63.     unsigned int    att;            /* 属性                    */
  64.     unsigned int    stt;            /* ステータス            */
  65.  
  66.     jmp_buf            jmpbuf;            /* ロングジャンプ用        */
  67.  
  68.     EV_T            *ev;            /* イベント                */
  69.  
  70.     TSKWIN_T        *winCrt;        /* カレントウィンドゥ    */
  71.     TSKWIN_T        *winTop;
  72.     TSKWIN_T        *winLast;
  73.  
  74.     int                (*ctrFunc)(struct _tsk_t *, int, ... );
  75.     void            *ptr;
  76.     char            tskName[128];    /* タスク名    */
  77. } TSK_T;
  78.  
  79. typedef struct
  80. {
  81.     jmp_buf            jmpbuf;            /* ロングジャンプ用        */
  82.     EV_T            *ev;
  83.  
  84.     int                tskNum;
  85.     TSK_T            *tskCrt;        /* アクティブタスク        */
  86.     TSK_T            *tskTop;
  87.     TSK_T            *tskLast;
  88. } TSKCTRL_T;
  89.  
  90. extern    TSKCTRL_T    *SiTskCt;
  91.  
  92. /*************************************************************************
  93. *    タスクステータス
  94. *************************************************************************/
  95.  
  96. #define    TSKSTT_OFF            (0)
  97. #define    TSKSTT_SLEEP        (1)
  98. #define    TSKSTT_WAKE            (2)
  99.  
  100. /*************************************************************************
  101. *    タスクメッセージ
  102. *************************************************************************/
  103.  
  104. #define    TSKMSG_INIT            (0x0001)    /* スタートアップイニシャライズ    */
  105. #define    TSKMSG_TERM            (0x0002)    /* ターミネートイニシャライズ    */
  106. #define    TSKMSG_START        (0x0011)    /* タスク始動                    */
  107. #define    TSKMSG_END            (0x0012)    /* タスク停止                    */
  108. #define    TSKMSG_ACTIVE        (0x0013)    /* タスク活動開始(RESUME)        */
  109. #define    TSKMSG_INACTIVE        (0x0014)    /* タスク活動停止(SUSPEND)        */
  110. #define    TSKMSG_PAUSE        (0x0021)    /* タスクポーズ                    */
  111. #define    TSKMSG_CONTINUE        (0x0022)    /* タスクポーズ解除                */
  112. #define    TSKMSG_CHKCLOSE        (0x0031)    /* タスククローズチェック        */
  113. #define    TSKMSG_CLOSE        (0x0032)    /* タスククローズ実行            */
  114. #define    TSKMSG_CHGICON        (0x0041)    /* アイコン化                    */
  115. #define    TSKMSG_CHGWIN        (0x0042)    /* ウィンドゥ化                    */
  116. #define    TSKMSG_EVIDL        (0x0080)    /* アイドリング状態                */
  117. #define    TSKMSG_EVQUE        (0x0081)    /* イベントデータの送信            */
  118.  
  119. #define    TSKMSG_WINLMENU        (0x0101)    /* ウィンドゥレフトメニュー        */
  120. #define    TSKMSG_WINRMENU        (0x0102)    /* ウィンドゥライトメニュー        */
  121.  
  122. /*----------------------------------------------------------------------*/
  123. #define    TSKJMP_CLOSE_WIN        (1)    /* ウィンドゥのクローズ    */
  124. #define    TSKJMP_CLOSE_TSK        (2)    /* タスク全体のクローズ    */
  125.  
  126. /*----------------------------------------------------------------------*/
  127. extern int            TSK_init(void);
  128. extern void            TSK_term(void);
  129. extern int            TSK_link( TSK_T *newTsk );
  130. extern TSK_T       *TSK_open( CONST char *name, int (*func)(TSK_T *,int,...), void *ptr );
  131. extern int            TSK_unlink( TSK_T *freTsk );
  132. extern void            TSK_close( TSK_T *tsk );
  133.  
  134. extern TSKWIN_T       *TSK_win_open( TSK_T *tsk, int prio, int (*func)(TSKWIN_T *), void *ptr );
  135. extern int            TSK_win_close( TSKWIN_T *tskwin );
  136. extern int            TSK_win_active( TSKWIN_T *tskwin );
  137. extern int            TSK_win_inactive( TSKWIN_T *tskwin );
  138.  
  139. extern int            tsk_evClose( int evt, EVDAT_T *evdat );
  140. extern int            TSK_chkClose( TSK_T *tsk );
  141.  
  142. extern int            TSK_win_setTypStd( TSKWIN_T *tskwin );
  143.  
  144. extern int            TSK_execSystem(void);
  145.  
  146. extern int            tsk_evIcon( int evt, EVDAT_T *evdat );
  147. extern int            TSK_chgIcon( TSK_T *tsk );
  148.  
  149. #endif
  150.